/******************************************************
 *** Javascript for e-mail control ********************
 ******************************************************/
// Global variables
var _EmailTimeout = 3000;
var _EmailControlServerScriptPath = "./scripts/php/controlEmail.php";

// On load DOM structure
$(document).ready(function() {
	// Set the ready event
	$("form").on("submit", function(e) {
		// Cancel the default click behavior
		e.preventDefault();
		
		// Validate the form
		if (Validate()) {
			// Perform an ajax call to the server
			$.ajax({
				type: "POST",
				url: _EmailControlServerScriptPath,
				data: $(this).serialize(), // Get the form data
				timeout : _EmailTimeout, // Timeout of the ajax call
				success: function(json) {				
					// Get the json content
					var dictionary = jQuery.parseJSON(json);
					
					// Check the status
					if (dictionary.status === 0) {
						// Show a user message
						alert("Obrigado por sua mensagem!\nThank you for your message!");
						
						// Reset the form
						$(this).reset();
					} else
						// Show a user message
						alert("Não foi possível enviar sua mensagem!\nUnable to send your message!"); 		        		        		      
		        },
		        error: function (json) {
		        	// Show a user message
					alert("Não foi possível enviar sua mensagem!\nUnable to send your message!");
	            }
			});
		}
	});
});

// Global functions
function Validate() {
	// Regex
	var emailTokenForValidation = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
	
	// Is valid name
	if ($("input#myContactName").val().trim() == "") {
		// Show a user message
		alert("Por favor, insira um nome.\nPlease, enter a name.");
		
		// Provide the return
		return false;
    }
	
	// Is valid e-mail
	if (($("input#myContactEmail").val().trim() == "") || (!(emailTokenForValidation.test($("input#myContactEmail").val())))) {
		// Show a user message
		alert("Por favor, insira um e-mail válido.\nPlease enter valid email.");
		
		// Provide the return
		return false;
	}
	
	// Provide the return
    return true;
}
